#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>

#define USER "USER"
#define MYPWD "PWD"//双引号引起来的是环境变量的名称

int main(int argc,char* argv[], char* env[])//main也是函数，是由系统调用
{
    //(5)
    //不使用main函数的参数，还可以使用全局的一个指针，char** environ,该二级指针指向环境变量
    extern char** environ;//这里要进行声明，因为environ是一个全局的外部变量
    int i=0;
    for(i=0;environ[i];i++)
    {
        printf("%d:%s\n",i,environ[i]);
    }

    //(4)
    //int i=0;
    //for(i=0;env[i];i++)
    //{
    //    printf("env[%d]:%s\n",i,env[i]);//前面说过环境变量实际上是以字符串的形式存储的
    //}

    //(3)
    //if(argc!=2)//代表命令行的参数必须等于2，即ls -a,或ls -al
    //{
    //    printf("Usage: \n\t%s [-a/-l/-al]\n",argv[0]);//argv[0]是程序名称
    //}
    //if(strcmp("-a",argv[1])==0)
    //{
    //    printf("功能a\n");
    //}
    //if(strcmp("-l",argv[1])==0)
    //{
    //    printf("功能l\n");
    //}
    //if(strcmp("-al",argv[1])==0)
    //{
    //    printf("功能al\n");
    //}
    
    //(2)
    //int i=0;
    //for(i=0;i<argc;i++)
    //{
    //    printf("argv[%d]:%s\n",i,argv[i]);
    //}

    //(1)
    //char* who = getenv(USER);//参数是环境变量的C字符串

    //if(strcmp(who,"root") == 0)
    //{
    //    printf("USER=%s\n",who);
    //    printf("USER=%s\n",who);
    //}
    //else
    //{
    //    printf("Permission denied 权限不足\n");
    //}

    //printf("%s\n",getenv(MYPWD));

    return 0;
}
